package pe.tnova.cliente.proyecto.core.servicemnt.impl;

import java.util.Date;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import pe.tnova.cliente.proyecto.core.dao.AsientoDAO;
import pe.tnova.cliente.proyecto.core.daobase.AsientoDAOBase;
import pe.tnova.cliente.proyecto.core.daobase.EstadioDAOBase;
import pe.tnova.cliente.proyecto.core.dominio.Asiento;
import pe.tnova.cliente.proyecto.core.dominio.Estadio;
import pe.tnova.cliente.proyecto.core.servicemnt.MantenimientoAsientoService;
import pe.tnova.core.db.JoinEntidad;
import pe.tnova.library.util.Exception.SQLExceptionDAO;
import pe.tnova.library.util.Exception.ServiceException;

@Service("MantenimientoAsientoService")
public class MantenimientoAsientoServiceImpl implements MantenimientoAsientoService {

	private static final Logger logger = LoggerFactory.getLogger(MantenimientoAsientoServiceImpl.class);

	@Autowired
	private AsientoDAOBase asientoDAOBase;
	@Autowired
	private EstadioDAOBase estadioDAOBase;

	@Autowired
	private AsientoDAO asientoDAO;
	
	

	public List<Asiento> getTodos() throws ServiceException {
		try {
			return asientoDAO.getTodos();
		} catch (SQLExceptionDAO e) {
			throw new ServiceException(e);
		}
	}

	public List<Asiento> getListaAsiento(Asiento filtro, Date finit, Date ffin, int inicio, int fin, String strSort, String strOrder, JoinEntidad... innerjoin) throws ServiceException {
		try {
			return asientoDAOBase.getListaAsiento(filtro, inicio, fin, strSort, strOrder, innerjoin);
		} catch (SQLExceptionDAO e) {
			throw new ServiceException(e);
		}
	}

	public void guardar(Asiento objeto) throws ServiceException {
		try {
			asientoDAO.guardar(objeto);
		} catch (SQLExceptionDAO e) {
			throw new ServiceException(e);
		}
	}

	public Asiento obtener(Long id) throws ServiceException {
		try {
			return asientoDAO.get(id);
		} catch (SQLExceptionDAO e) {
			throw new ServiceException(e);
		}
	}

	public void cambiarActivo(Long id) throws ServiceException {
		try {
			Asiento asiento = asientoDAO.get(id);
			if(asiento.getActivo()){
				asiento.setActivo(false);
			}else{
				asiento.setActivo(true);
			}
			asientoDAO.guardar(asiento);
		} catch (SQLExceptionDAO e) {
			throw new ServiceException(e);
		}
	}

	public List<Estadio> getEstadioCBO() throws ServiceException {
		try {
			return estadioDAOBase.getCboEstadio();
		} catch (SQLExceptionDAO e) {
			throw new ServiceException(e);			
		}
	}


}
